home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / GameKit / Makefiles / lib / Makeinc.common < prev   
Text File  |  1995-06-12  |  4KB  |  132 lines

  1. # Include file common to standard makefiles.
  2. # Copyright 1988, NeXT, Inc.
  3. #
  4. # A series of standard rules here describe all
  5. # transformations for the standard build process.
  6.  
  7. help:
  8.     echo "Standard mechanism supports these targets:"
  9.     echo "  all: make .NEW versions";
  10.     echo "  install: make .NEW versions and install them in DSTROOT";
  11.     echo "  local: install (w/o docs) in LCLROOT";
  12.     echo "  clean: remove *.o *.NEW *.spec *.aux";
  13.     echo "  docs: install man and spec pages in DSTROOT";
  14.     echo "  includes: install user .h files in DSTROOT";
  15.  
  16. MAKEFILE = Makefile
  17. PRODUCT_INSTALL = $(PRODUCT).install
  18. PRODUCT_ALL = $(PRODUCT).all
  19. PRODUCT_LOCAL = $(PRODUCT).local
  20. PRODUCT_CLEAN = $(PRODUCT).clean
  21. PRODUCT_NEW= $(PRODUCT).NEW
  22. PRODUCT_DOCS= $(PRODUCT).docs
  23. PRODUCT_INCLUDES= $(PRODUCT).includes
  24.  
  25. SYMROOT = .
  26. OBJROOT = .
  27. OFILE_DIR = $(OBJROOT)/obj
  28.  
  29. VPATH = $(OFILE_DIR)
  30.  
  31. OFILES = $(MFILES:.m=.o) $(CFILES:.c=.o) $(PSWFILES:.psw=.o) \
  32.     $(PSWMFILES:.pswm=.o) $(SFILES:.s=.o) $(LFILES:.l=.o) \
  33.     $(LMFILES:.lm=.o) $(YFILES:.y=.o) $(YMFILES:.ym=.o)
  34.  
  35. $(PRODUCT_ALL): $(PRODUCT_NEW)
  36.  
  37. $(PRODUCT_INSTALL): $(PRODUCT_NEW) $(PRODUCT_DOCS) $(PRODUCT_INCLUDES)
  38.     mkdirs -m 755 $(DSTROOT)/$(INSTALLDIR)
  39.     cd $(SYMROOT) ; \
  40.     install $(IFLAGS) $(@:.install=.NEW) $(DSTROOT)/$(INSTALLDIR)/$(@:.install=)
  41.  
  42. $(PRODUCT_INCLUDES):
  43. # install the include files
  44.     -if [ -n "$(USER_HFILES)" ]; then \
  45.       mkdirs -m 755 $(DSTROOT)/$(HINSTALLDIR); \
  46.       install -m 444 $(HIFLAGS) $(USER_HFILES) $(DSTROOT)/$(HINSTALLDIR); \
  47.     fi
  48.  
  49. $(PRODUCT_LOCAL): $(PRODUCT_NEW)
  50.     -if [ -n "$(USER_HFILES)" ]; then \
  51.       mkdirs -m 755 $(LCLROOT)/$(HINSTALLDIR); \
  52.       install -m 444 $(HIFLAGS) $(USER_HFILES) $(LCLROOT)/$(HINSTALLDIR); \
  53.     fi
  54.     mkdirs -m 755 $(LCLROOT)/$(INSTALLDIR); \
  55.     install $(IFLAGS) $(@:.local=.NEW) $(LCLROOT)/$(INSTALLDIR)/$(@:.local=)
  56.  
  57. $(PRODUCT_CLEAN):
  58.     \rm -f *.o *.NEW $(SPECFILES) $(SPECFILES:.spec=.aux)
  59.     \rm -f $(GARBAGE)
  60.     \rm -f Makedep
  61.     touch Makedep
  62.  
  63. $(PRODUCT_NEW): $$@first $(OFILE_DIR) $(OFILES) $(CSHFILES) $(SHFILES)
  64.     if [ `expr $(@:.NEW=) : '.*\.a' + 1 ` -ne 1 ] ; then\
  65.         if [ -f $(SYMROOT)/$@ ] ; then\
  66.           $(AR) ru $(SYMROOT)/$@ $(OFILES);\
  67.         else\
  68.           $(AR) q $(SYMROOT)/$@ $(OFILES);\
  69.         fi\
  70.     elif [ -n "$(CSHFILE)" ] ; then\
  71.         cp $(CSHFILE) $(SYMROOT)/$@;\
  72.     elif [ -n "$(SHFILE)" ] ; then\
  73.         cp $(SHFILE) $(SYMROOT)/$@;\
  74.     else\
  75.         $(CC) $(CFLAGS) $(RC_CFLAGS) $(LDFLAGS) -o $(SYMROOT)/$@ $(OFILES) $(LOADLIBS);\
  76.     fi
  77.  
  78. $(PRODUCT_DOCS): $(SPECFILES)
  79. # install spec files and man pages
  80.     -if [ -n "$(MANFILES)" ]; then\
  81.       mkdirs -m 755 $(DSTROOT)/$(MANINSTALLDIR); \
  82.       install -m 444 $(MANIFLAGS) $(MANFILES) $(DSTROOT)/$(MANINSTALLDIR); \
  83.     fi
  84.     -if [ -n "$(SPECFILES)" ]; then\
  85.       mkdirs -m 755 $(DSTROOT)/$(SPECINSTALLDIR); \
  86.       install -m 444 $(MANIFLAGS) $(SPECFILES) $(SPECFILES:.spec=.aux) \
  87.           $(DSTROOT)/$(SPECINSTALLDIR); \
  88.     fi
  89.  
  90. .m.spec:
  91.     speculate $(SPECFLAGS) $*.m
  92.  
  93. vers.c: $(DOVERS) $(OFILES)
  94.     @rm -f $@
  95.     vers_string -c $(PRODUCT) > $(OFILE_DIR)/$@
  96.  
  97. # A target for DOVERS to be set to when it should always be done
  98. ALWAYS:
  99.  
  100. .c.o:
  101.     $(CC) $(CFLAGS) $(RC_CFLAGS) -c $*.c -o $(OFILE_DIR)/$*.o
  102.     -md -u Makedep -d $*.d
  103.  
  104. all install local clean docs includes:
  105.     -if [ -n "$(PRODUCT)" ]; then\
  106.         $(MAKE) $(PRODUCT).$@ ;\
  107.     fi;
  108.     for i in `echo $(PRODUCTS)`; do\
  109.         echo ======= make $$i.$@ =======;\
  110.         $(MAKE) -f $$i.mk PRODUCT=$$i MAKEFILE=$$i.mk $$i.$@;\
  111.     done;
  112.     
  113.     
  114.     CWD=`pwd`; cd $(DSTROOT); DSTROOT=`pwd`; cd $$CWD; \
  115.     for i in `echo ${SUBDIRS}`; \
  116.       do \
  117.         echo ================= make $@ for $$i =================; \
  118.         (cd $$i; ${MAKE} DSTROOT=$$DSTROOT $@); \
  119.       done
  120.  
  121.  
  122. $(OFILE_DIR):
  123.     /bin/mkdirs $(OFILE_DIR)
  124.  
  125. $(DSTROOT):
  126.     echo 'Please make a directory for $@ and try again'; exit 1
  127.  
  128. DSTROOT LCLROOT:
  129.     -@if [ -n "${$@}" ]; then exit 0; else echo $@ must be defined; exit 1; fi
  130.  
  131. -include Makedep
  132.